# Aufgabe 1
# Beispiel Template für eine Spezifikation
# Funktionsname ::= (Wert,Wert,Wert,...) ::
#   nat x nat => nat    (Eingangs Typ, Eingangs Typ => return Typ) :::: Einschränkung
#   Beispiele{
#     #### Immer alle Beispiele angeben
#}

# Differenz zweier Würfel
# hollow_cube_volume ::= (l_outer, l_inner) ::
#   NAT x NAT =>? NAT :::: l_outer>=l_inner
#   Test{
#        (2,3)=>19  OK
#        (2,2)=>2   OK
#        (0,0)=>0   OK
#        ('10',5)=> ERR
#        (2,3) => ERR
#        (-2,-2) => ERR
#       }
$LOAD_PATH.unshift File.join(File.dirname(__FILE__),'../..','ext_pr1/lib')
require 'ext_pr1_v4'

def hollow_cube_volume(l_outer, l_inner)
  # Übergabe schecken
  check_pre( ( (l_outer.nat?) and (l_inner.nat?) and (l_outer >= l_inner) ) )
  cube_volume( l_outer ) - cube_volume( l_inner )
end

# Volumen eines Würfels
def cube_volume( v )
  v * v * v
end
